package com.hex.ds.hdtp.core.app.metadata.service.impl;

import com.hex.ds.hdtp.core.app.common.page.PageData;
import com.hex.ds.hdtp.core.app.common.page.converter.IPageAndPageDtoConverter;
import com.hex.ds.hdtp.core.app.common.page.dto.PageDto;
import com.hex.ds.hdtp.core.app.metadata.service.ISourceConfTemplateService;
import com.hex.ds.hdtp.core.inf.common.constant.CoreConst;
import com.hex.ds.hdtp.core.inf.common.page.Page;
import com.hex.ds.hdtp.core.inf.metadata.po.SourceConfTemplatePo;
import com.hex.ds.hdtp.core.inf.metadata.repository.ISourceConfTemplateRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Package: com.hex.hdc.web.source.dao.impl
 * @ClassName SourceConfTemplateService
 * @Description:数据源配置模板Service
 * @Author: Lijinwei
 * @Date 2021/7/16 10:32
 * @Version v1.0
 **/
@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class SourceConfTemplateService implements ISourceConfTemplateService {

    private final ISourceConfTemplateRepository sourceConfTemplateRepository;

    private final IPageAndPageDtoConverter pageAndPageDtoConverter;

    /**
     * @Package: com.hex.hdc.center.app.metadata.service.impl
     * @ClassName SourceConfTemplateService
     * @Description: 分页查询数据源配置模板
     * @Author: wz.li
     * @Date 2022/6/7 10:08
     * @Version v2.0.2
     **/
    @Override
    public PageData queryListByPage(SourceConfTemplatePo sourceConfTemplatePo, PageDto pageDto) {
        final Page<SourceConfTemplatePo> pageResult = sourceConfTemplateRepository.queryListByPage(
                sourceConfTemplatePo, pageAndPageDtoConverter.toPage(pageDto) );
        return new PageData(pageResult.getData(), pageResult.getTotal());
    }


    /*
     * @Method: queryListBySourceType <br>
     * @Param: [sourceType] <br>
     * @Return: java.util.List<com.hex.hdc.center.domain.metadata.SourceConfTemplate> <br>
     * @Description：查询指定数据源类型的可用配置<br>
     * @Author： wz.li<br>
     * @Date： 2022/5/7 16:23 <br>
     * @Version： V2.0.2<br>
     */
    @Override
    public List<SourceConfTemplatePo> queryListBySourceType(String sourceType) {
        return sourceConfTemplateRepository.queryListBySourceType(sourceType);
    }

    /*
     * @Method: removeByIds <br>
     * @Param: [pkIds] <br>
     * @Return: void <br>
     * @Description：批量删除<br>
     * @Author： wz.li<br>
     * @Date： 2023/1/10 14:05 <br>
     * @Version： V2.0.2<br>
     */
    @Override
    public void removeByIds(List<String> pkIds) {
       for (String pkId : pkIds){
           removeById(pkId);
       }
    }


    /*
     * @Method: add <br>
     * @Param: [requestDto] <br>
     * @Return: void <br>
     * @Description：创建数据源配置模板<br>
     * @Author： wz.li<br>
     * @Date： 2022/5/7 16:25 <br>
     * @Version： V2.0.2<br>
     */
    @Override
    public void add(SourceConfTemplatePo sourceConfTemplatePo) {
        sourceConfTemplateRepository.add(sourceConfTemplatePo);
    }

   /*
    * @Method: modifyById <br>
    * @Param: [requestDto] <br>
    * @Return: void <br>
    * @Description：修改数据源配置模板<br>
    * @Author： wz.li<br>
    * @Date： 2022/5/7 16:25 <br>
    * @Version： V2.0.2<br>
    */
    @Override
    public void modifyById(SourceConfTemplatePo sourceConfTemplatePo) {
        sourceConfTemplateRepository.modifyById(sourceConfTemplatePo);
    }

    /*
     * @Method: removeById <br>
     * @Param: [pkId] <br>
     * @Return: void <br>
     * @Description：删除数据源配置模板<br>
     * @Author： wz.li<br>
     * @Date： 2022/5/7 16:26 <br>
     * @Version： V2.0.2<br>
     */
    @Override
    public void removeById(String pkId) {
        sourceConfTemplateRepository.removeById(pkId);
    }

}
